import java.util.ArrayList;
import java.util.Calendar;


public class ApplicationModel {

	/**
	 * Lista wszystkich obecnych wydarzeń.
	 */
	public ArrayList<Event> eventsList;
	/**
	 * Aktualny filter wydarzeń.
	 */
	private String filter;
	/**
	 * Aktualnie wybrana data początkowa.
	 */
	private Calendar startDate;
	/**Aktualnie wybrana data końcowa*/
	private Calendar endDate;
	/**Aktualnie ustawiony typ widoku*/
	private int currentView;
	/**Zapisany w notacji HTML kolor niskiego priorytetu*/
	private String lowPriorityColor;
	/**Zapisany w notacji HTML kolor normalnego priorytetu*/
	private String normalPriorityColor;
	/**Zapisany w notacji HTML kolor wysokiego priorytetu*/
	private String highPriorityColor;
	/**Flaga informująca o włączonym przypomnieniu o wydarzeniach*/
	private boolean remindOn;
	/**Numer dźwięku wybranego do odtwarzania. Przyjmuje wartośći 1-3*/
	private int SoundID;
	/**
	 * Tworzy obiekt klasy ApplicationModel.
	 * @param a Referencja do obiektu controllera.
	 */
	
	ApplicationModel (Application a)
	{
		eventsList = new ArrayList<Event>();
	}
	
	/**
	 * Ustawia datę końca wydarzenia
	 * @param endDate Data końca wydarzenia
	 */
	public void setEndDate(Calendar endDate) {
		this.endDate = endDate;
	}
	/**
	 * Zwraca datę końca wydarzenia
	 * @return Data końca wydarzenia
	 */
	public Calendar getEndDate() {
		return endDate;
	}
	/**
	 * Ustawia datę początku wydarzenia.
	 * @param startDate Data początku wydarzenia.
	 */
	public void setStartDate(Calendar startDate) {
		this.startDate = startDate;
	}
/**
 * pobiera datę początku wydarzenia.
 * @return data początku wydarzenia.
 */
	public Calendar getStartDate() {
		return startDate;
	}
/**
 * Ustawia nowy filter wydarzeń.
 * @param filter Łańcuch znaków określajacy filter wydarzeń.
 */
	public void setFilter(String filter) {
		this.filter = filter;
	}
/**
 * Zwraca aktualny filter wydarzeń.
 * @return Łańcuch znaków określajacy filter wydarzeń.
 */
	public String getFilter() {
		return filter;
	}

/**
 * Ustawia typ widoku jaki jest obecnie wyświetlany
 * @param currentView Typ widoku.
 */
	public void setCurrentView(int currentView) {
		this.currentView = currentView;
	}

/**
 * Zwraca jaki typ widoku jest obecnie wyświetlany.
 * @return Typ widoku.
 */
	public int getCurrentView() {
		return currentView;
	}
/**
 * Ustawia nowy kolor niskiego priorytetu.
 * @param lowPriorityColor Łańcuch znaków oznaczający kolor w notacji HTML.
 */
	public void setLowPriorityColor(String lowPriorityColor) {
		this.lowPriorityColor = lowPriorityColor;
	}
	/**
	 * Ustawia nowy kolor wysokiego priorytetu.
	 * @param highPriorityColor Łańcuch znaków oznaczający kolor w notacji HTML.
	 */
	public void setHighPriorityColor(String highPriorityColor) {
		this.highPriorityColor = highPriorityColor;
	}

	/**
	 * Ustawia nowy kolor normalnego priorytetu.
	 * @param normalPriorityColor Łańcuch znaków oznaczający kolor w notacji HTML.
	 */
	public void setNormalPriorityColor(String normalPriorityColor) {
		this.normalPriorityColor = normalPriorityColor;
	}
	/**
	 * Zwraca kolor wybranego priorytetu.
	 * @param p liczba całkowita oznaczająca priorytet (0,2).
	 * @return Łańcuch znaków oznaczający kolor w notacji HTML.
	 */
	public String getPriorityColor (int p)
	{
		if (p==0) return lowPriorityColor;
		if (p==1) return normalPriorityColor;
		return highPriorityColor;
	}
/**
 * Ustawia czy powiadomienia mają być włączone
 * @param remindOn true jeżeli powiadomienia mają być włączone lub false w przeciwnym wypadku.
 */

	public void setRemindOn(boolean remindOn) {
		this.remindOn = remindOn;
	}
/**
 * Zwraca czy aktualnie powiadomienia są włączone.
 * @return true jeżeli powiadomienia są włączone false jeżeli nie.
 */

	public boolean isRemindOn() {
		return remindOn;
	}
/**
 * Ustawia id dźwięku ktory jest odtwarzany przy powiadomieniu.
 * @param soundID ID dzwięku (1,3).
 */

	public void setSoundID(int soundID) {
		SoundID = soundID;
	}

/**
 * Zwraca ID dźwięku aktualnie stosowanego do powiadomień.
 * @return Liczba całkowita oznaczająca ID dzwięku (1,3).
 */
	public int getSoundID() {
		return SoundID;
	}


	
}